package com.cw.subject.application.convert;

import com.cw.subject.application.dto.SubjectInfoDTO;
import com.cw.subject.domain.entity.SubjectInfoBO;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
import org.mapstruct.factory.Mappers;
import org.springframework.stereotype.Component;

import java.util.List;
@Mapper(componentModel = "spring")//是 MapStruct 中用于指定组件模型的注解,
// 将其设置为"spring"可以将生成的映射器接口标记为 Spring 的组件,Spring便可以将其识别并正确地管理
@Component
public interface SubjectInfoDTOConverter {


//    SubjectInfoDTOConverter INSTANCE = Mappers.getMapper(SubjectInfoDTOConverter.class);

    List<SubjectInfoDTO> convertBoListToInfoDTOList(List<SubjectInfoBO> subjectInfoBOList);

    // 使用@Mapping注解来指定optionList字段的映射关系(一般源对象与目标对象字段名不一致才需要指定映射关系),
    // 将DTO中的optionList属性映射到BO中的optionList属性
//    @Mapping(target = "optionList", source = "optionList")
        // 通过SubjectInfoDTO转化为SubjectInfoBO
    SubjectInfoBO convertDtoToInfoBO(SubjectInfoDTO subjectInfoDTO);

//    @Mapping(target = "labelName",source = "labelName")
    SubjectInfoDTO convertBoToInfoDTO(SubjectInfoBO subjectInfoBO);

}

